<?php

/**
 * Controlardor de gestión de porras
 *
 */
class controlador_porras {

    /**
     * Método para mostrar las competiciones
     */
    public function ver_porra() {
        $porra = $_GET['id'];
        $obj_porras = new Porra();
        $params_porras = $obj_porras->get($porra);

        $params = array();

        $obj_partido = new Partido();
        $params_partido = $obj_partido->obtener_partidos_porra($params_porras['id']);

        $param_partidos = array();

        foreach ($params_partido as $param_partido) {

            $param_partidos[] = array(
                'id' => $param_partido['id'],
                'fecha' => $param_partido['fecha'],
                'equipo_local' => $param_partido['equipo_local'],
                'equipo_visitante' => $param_partido['equipo_visitante'],
                'goles_local' => $param_partido['goles_local'],
                'goles_visitante' => $param_partido['goles_visitante'],
                'estado' => $param_partido['estado'],
                'porra' => $param_partido['porra'],
                'equipo_local_nombre' => $param_partido['equipolocalnombre'],
                'equipo_visitante_nombre' => $param_partido['equipovisitantenombre'],
            );
        }

        $params = array(
            'id' => $params_porras['id'],
            'fecha_inicio' => $params_porras['fecha_inicio'],
            'fecha_fin' => $params_porras['fecha_fin'],
            'bote_porra' => $params_porras['bote_porra'],
            'puntos_apuesta' => $params_porras['puntos_apuesta'],
            'disponible' => $params_porras['disponible'],
            'partidos' => $param_partidos
        );

        $obj_pronosticos = new Pronostico();
        $params_pronosticos = $obj_pronosticos->get_pronosticos_by_porra($porra);

        $params2 = array();

        foreach ($params_pronosticos as $param) {
            $obj_partido_pronostico = new Partido();
            $params_partido_pronostico = $obj_partido_pronostico->obtener_datos_partido($param['partido']);

            $params2[] = array(
                'id' => $param['id'],
                'usuario' => $param['usuario'],
                'nombreusuario' => $param['nombreusuario'],
                'partido' => $param['partido'],
                'partidos' => $params_partido_pronostico,
                'goles_local' => $param['goles_local'],
                'goles_visitante' => $param['goles_visitante'],
                'acertada' => $param['acertada'],
                'fecha' => $param['fecha']
            );
        }


        /* echo '<pre>';
          print_r($params2);
          echo '</pre>';
          die(); */

        require 'app/views/ver_porra.php';
    }

    /**
     * Método para mostrar las porras
     */
    public function listado_porras() {
        $jornada = $_GET['id'];
        $obj_porras = new Porra();
        $params_porras = $obj_porras->obtener_porras_disponibles_jornada($jornada);

        $params = array();
        foreach ($params_porras as $param) {
            $obj_partido = new Partido();
            $params_partido = $obj_partido->obtener_partidos_porra($param['id']);

            $param_partidos = array();

            foreach ($params_partido as $param_partido) {

                $param_partidos[] = array(
                    'id' => $param_partido['id'],
                    'fecha' => $param_partido['fecha'],
                    'equipo_local' => $param_partido['equipo_local'],
                    'equipo_visitante' => $param_partido['equipo_visitante'],
                    'goles_local' => $param_partido['goles_local'],
                    'goles_visitante' => $param_partido['goles_visitante'],
                    'estado' => $param_partido['estado'],
                    'porra' => $param_partido['porra'],
                    'equipo_local_nombre' => $param_partido['equipolocalnombre'],
                    'equipo_visitante_nombre' => $param_partido['equipovisitantenombre'],
                );
            }

            $params[] = array(
                'id' => $param['id'],
                'fecha_inicio' => $param['fecha_inicio'],
                'fecha_fin' => $param['fecha_fin'],
                'bote_porra' => $param['bote_porra'],
                'puntos_apuesta' => $param['puntos_apuesta'],
                'disponible' => $param['disponible'],
                'partidos' => $param_partidos
            );
        }

        require 'app/views/listado_porras.php';
    }

    /**
     * Método para mostrar las porras
     */
    public function ver_porras() {
        $obj_porras = new Porra();
        $params_porras = $obj_porras->obtener_todas_porras();

        $params = array();
        foreach ($params_porras as $param) {
            $obj_partido = new Partido();
            $params_partido = $obj_partido->obtener_partidos_porra($param['id']);

            $param_partidos = array();

            foreach ($params_partido as $param_partido) {

                $param_partidos[] = array(
                    'id' => $param_partido['id'],
                    'fecha' => $param_partido['fecha'],
                    'equipo_local' => $param_partido['equipo_local'],
                    'equipo_visitante' => $param_partido['equipo_visitante'],
                    'goles_local' => $param_partido['goles_local'],
                    'goles_visitante' => $param_partido['goles_visitante'],
                    'estado' => $param_partido['estado'],
                    'porra' => $param_partido['porra'],
                    'equipo_local_nombre' => $param_partido['equipolocalnombre'],
                    'equipo_visitante_nombre' => $param_partido['equipovisitantenombre'],
                );
            }

            $params[] = array(
                'id' => $param['id'],
                'fecha_inicio' => $param['fecha_inicio'],
                'fecha_fin' => $param['fecha_fin'],
                'bote_porra' => $param['bote_porra'],
                'puntos_apuesta' => $param['puntos_apuesta'],
                'disponible' => $param['disponible'],
                'partidos' => $param_partidos
            );
        }

        require 'app/views/listado_porras.php';
    }

    /**
     * Metodo para ñadir una nueva jornada
     */
    public function regristrar() {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $Obj_porra = new Porra();

            //Limpiamos los campos y los guardamos en variables
            $fecha_inicio = test_input($_POST['fecha_inicio']);
            $fecha_fin = test_input($_POST['fecha_fin']);
            $bote_porra = test_input($_POST['bote_porra']);
            $puntos_apuesta = test_input($_POST['puntos_apuesta']);
            if (isset($_POST['disponible'])) {
                $disponible = 1;
            } else {
                $disponible = 0;
            }
            $jornada = test_input($_POST['jornada']);

            $fecha1 = test_input($_POST['fecha1']);
            $equipo_local1 = test_input($_POST['equipo_local1']);
            $equipo_visitante1 = test_input($_POST['equipo_visitante1']);
            $id_api1 = test_input($_POST['id_api1']);

            $fecha2 = test_input($_POST['fecha2']);
            $equipo_local2 = test_input($_POST['equipo_local2']);
            $equipo_visitante2 = test_input($_POST['equipo_visitante2']);
            $id_api2 = test_input($_POST['id_api2']);

            
            
            $array_datos_porra = array(
                'fecha_inicio' => $fecha_inicio,
                'fecha_fin' => $fecha_fin,
                'bote_porra' => $bote_porra,
                'puntos_apuesta' => $puntos_apuesta,
                'disponible' => $disponible,
                'jornada' => $jornada
            );

            $Obj_porra->set($array_datos_porra);
            $id_porra = $Obj_porra->get_last_id();

            $array_datos_partido1 = array(
                'fecha' => $fecha1,
                'equipo_local' => $equipo_local1,
                'equipo_visitante' => $equipo_visitante1,
                'porra' => $id_porra,
                'id_api' => $id_api1
            );

            $array_datos_partido2 = array(
                'fecha' => $fecha2,
                'equipo_local' => $equipo_local2,
                'equipo_visitante' => $equipo_visitante2,
                'porra' => $id_porra,
                'id_api' => $id_api2
            );

            $obj_partido = new Partido();
            $obj_partido->set($array_datos_partido1);
            $obj_partido->set($array_datos_partido2);
            
            $obj_competicion = new Competicion();
            $params_competicion = $obj_competicion->obtener_competicion_jornada($jornada);
            
            if($params_competicion['bote_competicion'] >= $bote_porra){
                $obj_competicion->reducir_bote_competicion($params_competicion['id'], $bote_porra);
            }else{
                $obj_competicion->reducir_bote_competicion($params_competicion['id'], $params_competicion['bote_competicion']);
            }
            $_SESSION['adminbetporra_msj'] = 'Porra guardada correctamente.';
            header("location:porra/$id_porra");
        } else {
            $obj_equipo = new Equipo();
            $params_equipos = $obj_equipo->get_porras_by_jornada($_GET['id']);
            
            $obj_competicion = new Competicion();
            $params_competicion = $obj_competicion->obtener_competicion_jornada($_GET['id']);
            include 'app/views/registro_porra.php';
        }
    }

    /**
     * Formulario para editar regalos
     */
    public function editar() {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $Obj_porra = new Porra();
            $idPorra = $_GET['id'];
            //Limpiamos los campos y los guardamos en variables
            $fecha_inicio = test_input($_POST['fecha_inicio']);
            $fecha_fin = test_input($_POST['fecha_fin']);
            $bote_porra = test_input($_POST['bote_porra']);
            $puntos_apuesta = test_input($_POST['puntos_apuesta']);
            if (isset($_POST['disponible'])) {
                $disponible = 1;
            } else {
                $disponible = 0;
            }
            $jornada = test_input($_POST['jornada']);

            $idPartido1 = test_input($_POST['idPartido1']);
            $fecha1 = test_input($_POST['fecha1']);
            $equipo_local1 = test_input($_POST['equipo_local1']);
            $equipo_visitante1 = test_input($_POST['equipo_visitante1']);
            $goles_local1 = test_input($_POST['goles_local1']);
            $goles_visitante1 = test_input($_POST['goles_visitante1']);
            $estado1 = test_input($_POST['estado1']);

            $idPartido2 = test_input($_POST['idPartido2']);
            $fecha2 = test_input($_POST['fecha2']);
            $equipo_local2 = test_input($_POST['equipo_local2']);
            $equipo_visitante2 = test_input($_POST['equipo_visitante2']);
            $goles_local2 = test_input($_POST['goles_local2']);
            $goles_visitante2 = test_input($_POST['goles_visitante2']);
            $estado2 = test_input($_POST['estado2']);

            $array_datos_porra = array(
                'id' => $idPorra,
                'fecha_inicio' => $fecha_inicio,
                'fecha_fin' => $fecha_fin,
                'bote_porra' => $bote_porra,
                'puntos_apuesta' => $puntos_apuesta,
                'disponible' => $disponible,
                'jornada' => $jornada
            );

            $Obj_porra->edit($array_datos_porra);

            $array_datos_partido1 = array(
                'id' => $idPartido1,
                'fecha' => $fecha1,
                'equipo_local' => $equipo_local1,
                'equipo_visitante' => $equipo_visitante1,
                'goles_local' => $goles_local1,
                'goles_visitante' => $goles_visitante1,
                'estado' => $estado1,
                'porra' => $idPorra
            );

            $array_datos_partido2 = array(
                'id' => $idPartido2,
                'fecha' => $fecha2,
                'equipo_local' => $equipo_local2,
                'equipo_visitante' => $equipo_visitante2,
                'goles_local' => $goles_local2,
                'goles_visitante' => $goles_visitante2,
                'estado' => $estado2,
                'porra' => $idPorra
            );

            $obj_partido = new Partido();
            $obj_partido->edit($array_datos_partido1);
            $obj_partido->edit($array_datos_partido2);
            $_SESSION['adminbetporra_msj'] = 'Porra modificada correctamente.';
            header("location:../porra/$idPorra");
        } else {
            $obj_porra = new Porra();
            if (!$params_porras = $obj_porra->get($_GET['id'])) {
                header('location:../porras');
            } else {

                $params = array();

                $obj_partido = new Partido();
                $params_partido = $obj_partido->obtener_partidos_porra($params_porras['id']);

                $param_partidos = array();

                foreach ($params_partido as $param_partido) {

                    $param_partidos[] = array(
                        'id' => $param_partido['id'],
                        'fecha' => $param_partido['fecha'],
                        'equipo_local' => $param_partido['equipo_local'],
                        'equipo_visitante' => $param_partido['equipo_visitante'],
                        'goles_local' => $param_partido['goles_local'],
                        'goles_visitante' => $param_partido['goles_visitante'],
                        'estado' => $param_partido['estado'],
                        'porra' => $param_partido['porra'],
                        'equipo_local_nombre' => $param_partido['equipolocalnombre'],
                        'equipo_visitante_nombre' => $param_partido['equipovisitantenombre'],
                    );
                }

                $params = array(
                    'id' => $params_porras['id'],
                    'fecha_inicio' => $params_porras['fecha_inicio'],
                    'fecha_fin' => $params_porras['fecha_fin'],
                    'bote_porra' => $params_porras['bote_porra'],
                    'puntos_apuesta' => $params_porras['puntos_apuesta'],
                    'disponible' => $params_porras['disponible'],
                    'jornada' => $params_porras['jornada'],
                    'partidos' => $param_partidos
                );

                /* echo '<pre>';
                  print_r($params);
                  echo '</pre>';
                  die(); */

                $obj_equipo = new Equipo();
                $params_equipos = $obj_equipo->get_porras_by_jornada($obj_porra->jornada);
                require 'app/views/modificar_porra.php';
            }
        }
    }

    function comprobarPorra() {
        $porra = $_GET['id'];
        $obj_partido = new Partido();
        $params_partido = $obj_partido->obtener_partidos_porra($porra);

        $partido1 = $params_partido[0];
        $goles_local1 = $partido1['goles_local'];
        $goles_visitante1 = $partido1['goles_visitante'];
        
        //comprobamos si los goles son mayor a 5 para poder compararlo
        if ($goles_local1 > 5){
            $goles_local1 = 5;
        }
        if ($goles_visitante1 > 5){
            $goles_visitante1 = 5;
        }

        $obj_pronostico = new Pronostico();
        $params_prontosico = $obj_pronostico->get_pronosticos_by_partido($partido1['id']);

        foreach ($params_prontosico as $fila) {
            if ($fila['goles_local'] == $goles_local1 && $fila['goles_visitante'] == $goles_visitante1) {
                $obj_pronostico->cambiar_estado($fila['id'], "Acertada");
            } else {
                $obj_pronostico->cambiar_estado($fila['id'], "Perdida");
            }
        }

        $partido2 = $params_partido[1];
        $goles_local2 = $partido2['goles_local'];
        $goles_visitante2 = $partido2['goles_visitante'];
        
        //comprobamos si los goles son mayor a 5 para poder compararlo
        if ($goles_local2 > 5){
            $goles_local2 = 5;
        }
        if ($goles_visitante2 > 5){
            $goles_visitante2 = 5;
        }

        $obj_pronostico = new Pronostico();
        $params_prontosico = $obj_pronostico->get_pronosticos_by_partido($partido2['id']);

        foreach ($params_prontosico as $fila) {
            if ($fila['goles_local'] == $goles_local2 && $fila['goles_visitante'] == $goles_visitante2) {
                $obj_pronostico->cambiar_estado($fila['id'], "Acertada");
            } else {
                $obj_pronostico->cambiar_estado($fila['id'], "Perdida");
            }
        }

        $_SESSION['adminbetporra_msj'] = 'Estados actualizados correctamente.';
        header("location:../porra/$porra");
    }

    function repartirBote() {
        $porra = $_GET['id'];
        $obj_pronostico = new Pronostico();
        $params_pronostico = $obj_pronostico->get_pronosticos_by_porra($porra);
        $ganadores = array();

        //Guardamos en un array los usuarios que han acertado los dos partidos
        $ultimo_usuario = 0;
        $ultima_acertada = "Perdida";
        foreach ($params_pronostico as $fila) {
            if ($fila['usuario'] == $ultimo_usuario) {
                if ($ultima_acertada == "Acertada" && $fila['acertada'] == "Acertada") {
                    $ganadores[] = $fila['usuario'];
                }
            }
            $ultimo_usuario = $fila['usuario'];
            $ultima_acertada = $fila['acertada'];
        }


        //Repartimos el bote de la porra entre los acertantes
        $obj_porra = new Porra();
        $bote_porra = $obj_porra->obtener_bote_porra($porra);
        $obj_usuario = new Usuario();

        $obj_partido = new Partido();
        $params_partidos = $obj_partido->obtener_partidos_porra($porra);
        
        $numero_acertantes = count($ganadores);
        if ($numero_acertantes > 0) {
            $premio_por_usuario = round($bote_porra / $numero_acertantes);
            foreach ($ganadores as $fila) {
                $obj_usuario->sumar_puntos_usuario($fila, $premio_por_usuario);
                foreach ($params_partidos as $param_partido) {
                    $obj_pronostico->sumar_puntos_ganancia_usuario($fila, $param_partido['id'], $premio_por_usuario);
                }
                
            }
            $obj_porra->eliminaro_bote($porra);
            $_SESSION['adminbetporra_msj'] = "Bote repartido correctamente a $numero_acertantes usuarios.";
            header("location:../porra/$porra");
        } else {//no hay acertantes
            $obj_competicion = new Competicion();
            $competicion = $obj_competicion->obtener_competicion_porra($porra);
            $obj_competicion->actualizar_bote_competicion($competicion, $bote_porra);
            $obj_porra->eliminaro_bote($porra);
            
            $_SESSION['adminbetporra_msj'] = "Bote repartido correctamente a $numero_acertantes usuarios.";
            header("location:../porra/$porra");
        }
    }

    /**
     * Método para desactivar una porra
     */
    public function activar() {
        $obj_porra = new Porra();
        if (!$obj_porra->activar_porra($_GET['id'])) {
            header("location:../porras");
        }
        $_SESSION['adminbetporra_msj'] = 'Porra activada correctamente.';
        header("location:../porras");
    }

    /**
     * Método para activar una porra
     */
    public function desactivar() {
        $obj_porra = new Porra();
        if (!$obj_porra->desactivar_porra($_GET['id'])) {
            header("location:../porras");
        }
        $_SESSION['adminbetporra_msj'] = 'Porra Desactivada correctamente.';
        header("location:../porras");
    }
}

?>